Generating messaging streams with animated objects

ABSTRACT

A method for generating a messaging stream where one or more messages are exchanged between a first user and a second user comprises generating a messaging stream where one or more messages are exchanged between a first user and a second user. The method further includes receiving a selection of an animated object from the first user for the messaging stream. The method further includes providing the animated object in the messaging stream. The method further includes receiving a first action from the first user related to the animated object. The method further includes modifying a display of the animated object based on the first action. The method further includes receiving a second action from the second user related to the animated object. The method further includes modifying the display of the animated object based on the second action.

BACKGROUND

Current messaging applications allow for non-interactive,one-directional objects in the form of stickers, emojis, photos, GIFs,and sounds. However, these one-directional objects may be consideredfleeting because they are limited in applicability. For example, a firstuser may send an emoji to a second user, who finds the emoji to befunny, but then forgets about the emoji entirely.

The background description provided herein is for the purpose ofgenerally presenting the context of the disclosure. Work of thepresently named inventors, to the extent it is described in thisbackground section, as well as aspects of the description that may nototherwise qualify as prior art at the time of filing, are neitherexpressly nor impliedly admitted as prior art against the presentdisclosure.

SUMMARY

Implementations generally relate to a computer-implemented method togenerate a messaging stream where one or more messages are exchangedbetween a first user and a second user. The method may includegenerating a messaging stream where one or more messages are exchangedbetween a first user and a second user. The method further includesreceiving a selection of an animated object from the first user for themessaging stream. The method further includes providing the animatedobject in the messaging stream. The method further includes receiving afirst action from the first user related to the animated object. Themethod further includes modifying a display of the animated object basedon the first action. The method further includes receiving a secondaction from the second user related to the animated object. The methodfurther includes modifying the display of the animated object based onthe second action.

In some implementations, receiving the first action from the first userincludes detecting a change in airflow near a microphone associated witha user device. In some implementations, receiving the first action fromthe first user includes detecting movement of a finger on a touch screenor detection of movement of a pointing device. In some implementations,receiving the first action from the first user includes detectingmovement of a user device based on information received from a sensorassociated with the user device. In some implementations, receiving thefirst action from the first user includes receiving a message from thefirst user and determining a context from the messaging stream andmodifying a display of the animated object based on the first actionincludes modifying the display of the animated object based on thecontext from the messaging stream. In some implementations, the firstaction is pulling the animated object in a first direction and thesecond action is pulling the animated object in a second direction. Insome implementations, the method further comprises displaying the one ormore messages within the messaging stream while the animated objectremains fixed in a portion of the messaging stream. In someimplementations, the first user is a chat bot and the animated object isrelated to the one or more messages exchanged between the first user andthe second user. In some implementations, the display of the animatedobject is modified based on at least one of a word in the one or moremessages, voice content, and a context of the messaging stream. In someimplementations, the method further comprises identifying a set ofobjects to provide as options to the first user based on a type of userdevice on which the messaging stream is displayed, wherein the animatedobject is part of the set of objects.

In some implementations, the method includes generating a messagingstream where one or more messages are exchanged between a first user anda second user. The method further includes receiving a selection of ananimated object from the first user for the messaging stream. The methodfurther includes causing a version of the animated object to bedisplayed based on a type of user device on which the animated object isdisplayed. The method further includes receiving an action from thesecond user related to the animated object. The method further includesin response to receiving the action, modifying the display of theanimated object.

In some implementations, the selection is a first selection and theanimated object is a first animated object and the method furthercomprises providing the second user with a set of animated objects basedon their relationship to the first object, receiving a second selectionof a second animated object from the set of animated objects, and inresponse to the receiving the second selection, providing the secondobject in the messaging stream. In some implementations, the version ofthe animated object to be displayed based on the type of user device onwhich the animated object is displayed includes a complicated versionfor a desktop computer, a simpler version for a mobile device, and amore simple version for a smart watch. In some implementations, theselection is a first selection, the animated object is a first animatedobject, the action from the second user includes a second selection of asecond animated object from the second user for the messaging stream,and modifying the display of the first animated object includes thefirst animated object interacting with the second animated object.

In some implementations, the method may include means for generating amessaging stream where one or more messages are exchanged between afirst user and a second user. The method further includes means forreceiving a selection of an animated object from the first user for themessaging stream. The method further includes means for providing theanimated object in the messaging stream. The method further includesmeans for receiving a first action from the first user related to theanimated object. The method further includes means for modifying adisplay of the animated object based on the first action. The methodfurther includes means for receiving a second action from the seconduser related to the animated object. The method further includes meansfor modifying the display of the animated object based on the secondaction.

The various implementations described below provide messaging streamsthat include interactive animated objects. The animated objectsdescribed below may include multimedia features, such as features thatcan be displayed on a display screen, projected in a virtual realityenvironment, played back as audio, played back via haptic feedback, or acombination of such modalities. In various implementations, based onuser consent, the animated objects react to user input, messagesexchanged in the messaging stream, messaging context, and a combinationof such factors. Interactive animated objects may provide severaladvantages. For example, such animated objects may enhance the userexperience of using a messaging application that implements themessaging stream, e.g., by enabling users to express themselves ininteractive ways, rather than being restricted to sending text, images,or stock items such as animated GIF, stickers, and emoji. Further, inimplementations that provide animated objects in messaging streams thatinclude multiple users, the animated objects may be acted uponconcurrently, or sequentially, by multiple users. Such interactivity mayprovide geographically separated users an experience of collaborativelymodifying an object. A further benefit is that behaviors of the objectsmay be customizable by users.

The implementations provided herein efficiently provide interactiveanimated objects in a messaging stream. For example, the animatedobjects may be preprogrammed for certain behaviors, e.g., may beconfigured to respond to various user actions, messaging context, etc.by being modified or displayed in accordance with the user actions orcontext. In this manner, a technical advantage is that a large or eveninfinite number of behaviors of animated objects may be provided by acombination of preprogrammed behaviors, without the need to explicitlyspecify each behavior. This can permit complex animated objects to bestored and displayed with limited computational resources. Animatedobjects may be downloaded or accessed on demand, e.g., only uponinsertion of the animated object in the messaging stream, which reducesstorage space required to store the objects. Different versions of ananimated object may be provided, as described below, for different userdevices. Therefore, devices with limited storage space, network accesscapacity, and processing power, can still render a suitable version ofan animated object. Thus, implementations described below provideanimated objects in messaging streams for different types of userdevices, without the need for device-specific reconfiguration.

BRIEF DESCRIPTION OF THE DRAWINGS

The disclosure is illustrated by way of example, and not by way oflimitation in the figures of the accompanying drawings in which likereference numerals are used to refer to similar elements.

FIG. 1 illustrates a block diagram of an example system that generates amessaging stream with an animated object according to someimplementations.

FIG. 2 illustrates a block diagram of an example computing device thatgenerates the messaging stream with the animated object according tosome implementations.

FIG. 3A illustrates an example user interface of a messaging stream thatincludes an animated cookie according to some implementations.

FIG. 3B illustrates an example user interface of a messaging stream thatincludes the animated cookie with eyes that follow a pointing devicecontrolled by a first user according to some implementations.

FIG. 3C illustrates an example user interface of a messaging stream thatincludes the animated cookie that is viewable by multiple usersaccording to some implementations.

FIG. 3D illustrates an example user interface of a messaging stream thatincludes the animated cookie with eyes that follow a cursor controlledby a second user according to some implementations.

FIG. 3E illustrates an example user interface of a messaging stream thatincludes the animated cookie that reacts to being moved according tosome implementations.

FIG. 3F illustrates an example user interface of a messaging stream thatincludes the animated cookie that reacts to being placed according tosome implementations.

FIG. 3G illustrates an example user interface of a messaging stream thatincludes the animated cookie with eyes that move to view text displayedwithin the messaging stream according to some implementations.

FIG. 3H illustrates an example user interface of a messaging stream thatincludes the animated cookie that stays in a fixed location within themessaging stream according to some implementations.

FIG. 3I illustrates an example user interface of a messaging stream thatincludes an animated cookie that reacts to a word in a message accordingto some implementations.

FIG. 3J illustrates an example user interface of a messaging stream thatincludes the animated cookie that continues to react to the word in themessage according to some implementations.

FIG. 4A illustrates an example user interface of a messaging stream thatincludes an animated bear according to some implementations.

FIG. 4B illustrates an example user interface of the messaging streamthat includes the animated bear after a user performed a user actionaccording to some implementations.

FIG. 5A illustrates an example user interface of a messaging stream thatincludes animated bubbles according to some implementations.

FIG. 5B illustrates the example user interface of the messaging streamthat includes the animated bubbles after two users performed useractions according to some implementations.

FIG. 6 illustrates an example user interface of a messaging stream thatincludes an animated money transfer object according to someimplementations.

FIG. 7A illustrates an example user interface of an animated takeout boxaccording to some implementations.

FIG. 7B illustrates the example user interface of the animated takeoutbox after a user performed a user action according to someimplementations.

FIG. 8A illustrates an example user interface of a messaging stream thatincludes an animated airplane according to some implementations.

FIG. 8B illustrates an example user interface of the messaging streamthat includes an animated couple that is displayed responsive to a useraction related to the animated airplane according to someimplementations.

FIG. 9 illustrates a flowchart of an example method to generate amessaging stream that includes an animated object.

DETAILED DESCRIPTION

In some implementations, a messaging application generates a messagingstream where messages are exchanged between a first user and a seconduser. The messaging application may receive a selection of an animatedobject from the first user for the messaging stream. For example, thefirst user may select an animated bubble to add to the messaging stream.The messaging application may add the animated object to the messagingstream. For example, the first user and the second user may view theanimated bubble in the messaging stream.

The messaging application may receive a first action from the first userrelated to the animated object. For example, the first user may blowinto a user device and the user device detects a change in airflow nearthe microphone. The messaging application may modify a display of theanimated object based on the first action. For example, the messagingapplication may show the bubble as moving upwards based on the userblowing into the user device. The messaging application may receive asecond action from the second user related to the animated object. Forexample, the messaging application may receive indications based on thesecond user pulling the bubble with a finger on the user device. Themessaging application may modify the display of the animated objectbased on the second action. For example, the messaging application mayshow the bubble as stretching in the direction corresponding to themovement of the finger and then popping.

Example System

FIG. 1 illustrates a block diagram of an example system 100 thatgenerates a messaging stream that includes an animated object. Theillustrated system 100 includes a messaging server 101, user devices 115a, 115 n, a second server 120, and a network 105. Users 125 a, 125 n maybe associated with respective user devices 115 a, 115 n. In someimplementations, the system 100 may include other servers or devices notshown in FIG. 1. In FIG. 1 and the remaining figures, a letter after areference number, e.g., “115 a,” represents a reference to the elementhaving that particular reference number. A reference number in the textwithout a following letter, e.g., “115,” represents a general referenceto implementations of the element bearing that reference number.

The messaging server 101 may include a processor, a memory, and networkcommunication capabilities. In some implementations, the messagingserver 101 is a hardware server. The messaging server 101 iscommunicatively coupled to the network 105 via signal line 102. Signalline 102 may be a wired connection, such as Ethernet, coaxial cable,fiber-optic cable, etc., or a wireless connection, such as Wi-Fi®,Bluetooth®, or other wireless technology. In some implementations, themessaging server 101 sends and receives data to and from one or more ofthe user devices 115 a, 115 n and the second server 120 via the network105. The messaging server 101 may include a messaging application 103 aand a database 199.

The messaging application 103 a may be code and routines operable togenerate a messaging stream that includes an animated object. In someimplementations, the messaging application 103 a may be implementedusing hardware including a field-programmable gate array (FPGA) or anapplication-specific integrated circuit (ASIC). In some implementations,the messaging application 103 a may be implemented using a combinationof hardware and software.

The database 199 may store animated objects, messaging streams, etc. Forexample, the database 199 may store the messages between a first userand a second user. The database 199 may also store social network dataassociated with users 125, user preferences for the users 125, etc.

The user device 115 may be a computing device that includes a memory anda hardware processor. For example, the user device may include a desktopcomputer, a mobile device, a tablet computer, a mobile telephone, awearable device, a head-mounted display, a mobile email device, aportable game player, a portable music player, a reader device, oranother electronic device capable of accessing a network 105.

In the illustrated implementation, user device 115 a is coupled to thenetwork 105 via signal line 108 and user device 115 n is coupled to thenetwork 105 via signal line 110. Signal lines 108 and 110 may be a wiredconnection, such as Ethernet, coaxial cable, fiber-optic cable, etc., ora wireless connection, such as Wi-Fi®, Bluetooth®, or other wirelesstechnology. User devices 115 a, 115 n are accessed by users 125 a, 125n, respectively. The user devices 115 a, 115 n in FIG. 1 are used by wayof example. While FIG. 1 illustrates two user devices, 115 a and 115 n,the disclosure applies to a system architecture having one or more userdevices 115.

In some implementations, the user device 115 can be a user device thatis included in a wearable device worn by the user 125. For example, theuser device 115 is included as part of a clip (e.g., a wristband), partof jewelry, or part of a pair of glasses. In another example, the userdevice 115 can be a smart watch. The user 125 may view an animatedobject from the messaging application 103 on a display of the deviceworn by the user 125. For example, the user 125 may view the animatedobject on a display of a smart watch or a smart wristband.

In some implementations, messaging application 103 b may be stored on auser device 115 a. The messaging application 103 may include athin-client messaging application 103 b stored on the user device 115 aand a messaging application 103 a that is stored on the messaging server101. For example, the messaging application 103 b stored on the userdevice 115 a may display a messaging stream that includes an animatedobject. The user device 115 a may identify a user action from a firstuser, such as shaking the user device 115 a to make snow fall over ananimated object of a snowman. The user device 115 a may transmitinformation about the messaging stream and the user action to themessaging application 103 a stored on the messaging server 101, whichprovides the information to a second user that accesses the messagingapplication 103 a from a desktop computer.

The second server 120 may include a processor, a memory, and networkcommunication capabilities. The second server 120 may access the network105 via signal line 109. The second server 120 may receive informationfrom the messaging application 103 about the messaging stream andprovide information to the messaging application 103. For example, thesecond server 120 may be associated with a bank and the second server120 may communicate with the messaging application 103 to pay a billusing the bank information. A user 125 may instruct the messagingapplication 103 to authorize the second server 120 to pay a bill byclicking on an animated object of a bag of money. Once the transactionis complete, the second server 120 may send the messaging application103 a notification that the transaction is complete. The messagingapplication 103 may modify the animated object to show the money movingfrom the money bag to the bank associated with the second server 120. Inanother example, the second server 120 may include a bot that performsfunctions for a user 125, such as ordering food, scheduling anappointment, making a reservation, booking a flight, etc. In yet anotherexample, the second server 120 may include a separate application thatprovides information to the messaging application 103, such as acalendar application that sends, upon user consent, information aboutthe user's meetings.

In the illustrated implementation, the entities of the system 100 arecommunicatively coupled via a network 105. The network 105 may be aconventional type, wired or wireless, and may have numerous differentconfigurations including a star configuration, token ring configurationor other configurations. Furthermore, the network 105 may include alocal area network (LAN), a wide area network (WAN) (e.g., theInternet), and/or other interconnected data paths across which multipledevices may communicate. In some implementations, the network 105 may bea peer-to-peer network. The network 105 may also be coupled to orinclude portions of a telecommunications network for sending data in avariety of different communication protocols. In some implementations,the network 105 includes Bluetooth® communication networks, WiFi®, or acellular communications network for sending and receiving data includingvia short messaging service (SMS), multimedia messaging service (MMS),hypertext transfer protocol (HTTP), direct data connection, email, etc.Although FIG. 1 illustrates one network 105 coupled to the user devices115 and the messaging server 101, in practice one or more networks 105may be coupled to these entities.

In situations in which the systems and methods discussed herein maycollect or use personal information about users (e.g., user data,information about a user's social network, user's location, user'sbiometric information, user's activities and demographic information,the messaging server stores and analyzes videos), users are providedwith opportunities to control whether information is collected, whetherthe personal information is stored, whether the personal information isused, whether the videos are analyzed, and how the information about theuser is collected, stored, and used. That is, the systems and methodsdiscussed herein collect, store, and/or use user personal informationonly upon receiving explicit authorization from the relevant users to doso. For example, a user is provided with control over whether programsor features collect user information about that particular user or otherusers relevant to the program or feature. Each user for which personalinformation is to be collected is presented with one or more options toallow control over the information collection relevant to that user, toprovide permission or authorization as to whether the information iscollected and as to which portions of the information are to becollected. For example, users can be provided with one or more suchcontrol options over a communication network. In addition, certain datamay be treated in one or more ways before it is stored or used so thatpersonally identifiable information is removed. As one example, a user'sidentity information may be treated, e.g., anonymized, so that nopersonally identifiable information can be determined from a video. Asanother example, a user's geographic location may be generalized to alarger region so that the user's particular location cannot bedetermined.

Example Computing Device

FIG. 2 illustrates a block diagram of an example computing device 200that generates composite images. The computing device 200 may be amessaging server 101 or a user device 115. The computing device 200 mayinclude a processor 235, a memory 237, a communication unit 239, adisplay 241, a speaker 243, a sensor 245, and a storage device 247.Additional components may be present or some of the previous componentsmay be omitted depending on the type of computing device 200. Forexample, if the computing device 200 is the messaging server 101, thecomputing device 200 may not include the display 241, the speaker 243,or the sensor 245. A messaging application 103 may be stored in thememory 237. In implementations where the computing device 200 is awearable device, the computing device 200 may not include storage device247. In some implementations, the computing device 200 may include othercomponents not listed here, such as a battery, etc. The components ofthe computing device 200 may be communicatively coupled by a bus 220.

The processor 235 includes an arithmetic logic unit, a microprocessor, ageneral purpose controller or some other processor array to performcomputations and provide instructions to a display device. Processor 235processes data and may include various computing architectures includinga complex instruction set computer (CISC) architecture, a reducedinstruction set computer (RISC) architecture, or an architectureimplementing a combination of instruction sets. Although FIG. 2 includesa single processor 235, multiple processors 235 may be included. Otherprocessors, operating systems, sensors, displays and physicalconfigurations may be part of the computing device 200. The processor235 is coupled to the bus 220 for communication with the othercomponents via signal line 222.

The memory 237 stores instructions that may be executed by the processor235 and/or data. The instructions may include code for performing thetechniques described herein. The memory 237 may be a dynamic randomaccess memory (DRAM) device, a static RAM, or some other memory device.In some implementations, the memory 237 also includes a non-volatilememory, such as a (SRAM) device or flash memory, or similar permanentstorage device and media including a hard disk drive, a compact discread only memory (CD-ROM) device, a DVD-ROM device, a DVD-RAM device, aDVD-RW device, a flash memory device, or some other mass storage devicefor storing information on a more permanent basis. The memory 237includes code and routines operable to execute the messaging application103, which is described in greater detail below. The memory 237 iscoupled to the bus 220 for communication with the other components viasignal line 224.

The communication unit 239 transmits and receives data to and from atleast one of the user device 115 and the messaging server 101 dependingupon where the messaging application 103 may be stored. In someimplementations, the communication unit 239 includes a port for directphysical connection to the network 105 or to another communicationchannel. For example, the communication unit 239 includes a universalserial bus (USB), secure digital (SD), category 5 cable (CAT-5) orsimilar port for wired communication with the user device 115 or themessaging server 101, depending on where the messaging application 103may be stored. In some implementations, the communication unit 239includes a wireless transceiver for exchanging data with the user device115, messaging server 101, or other communication channels using one ormore wireless communication methods, including IEEE 802.11, IEEE 802.16,Bluetooth® or another suitable wireless communication method. Thecommunication unit 239 is coupled to the bus 220 for communication withthe other components via signal line 226.

In some implementations, the communication unit 239 includes a cellularcommunications transceiver for sending and receiving data over acellular communications network including via short messaging service(SMS), multimedia messaging service (MMS), hypertext transfer protocol(HTTP), direct data connection, e-mail or another suitable type ofelectronic communication. In some implementations, the communicationunit 239 includes a wired port and a wireless transceiver. Thecommunication unit 239 also provides other conventional connections tothe network 105 for distribution of files and/or media objects usingstandard network protocols including, but not limited to, user datagramprotocol (UDP), TCP/IP, HTTP, HTTP secure (HTTPS), simple mail transferprotocol (SMTP), SPDY, quick UDP internet connections (QUIC), etc.

The display 241 may include hardware operable to display graphical datareceived from the messaging application 103. For example, the display241 may render graphics to display an overlay and a resulting compositeimage. The display 241 is coupled to the bus 220 for communication withthe other components via signal line 228.

The speaker 243 may include hardware operable to emit noises. Forexample, in response to a user performing an action, the action module206 may instruct the speaker 243 to emit a sound. The speaker is coupledto the buss 220 for communication with the other components via signalline 230.

The sensor 245 may include hardware operable to detect changes to theuser device 115. For example, the sensor 245 may include motion sensorsthat measure movement of the computing device 200. For example, thesensor 245 may include an accelerometer and a gyroscope that detectacceleration forces and rotational forces along the x, y, and z-axes.The sensor 245 may also include position sensors that measure thephysical position of the user device 115, such as orientation sensorsand magnetometers. The sensor 245 may also include hardware that detectssounds and/or pressure changes, such as a microphone that detectschanges in airflow when a user blows on the computing device 200. Thesensor 245 is coupled to the bus 220 for communication and with theother components via signal line 232. The sensor 245 may detect contacton a touch screen of the computing device 200. For example, the sensor245 may detect a user's finger touching the touch screen and movement ofthe user's finger.

The storage device 247 may be a non-transitory computer-readable storagemedium that stores data that provides the functionality describedherein. In implementations where the computing device 200 is themessaging server 101, the storage device 247 may include the database199 in FIG. 1. The storage device 247 may be a DRAM device, a SRAMdevice, flash memory or some other memory device. In someimplementations, the storage device 247 also includes a non-volatilememory or similar permanent storage device and media including a harddisk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, aDVD-RW device, a flash memory device, or some other mass storage devicefor storing information on a permanent basis. The storage device 247 iscoupled to the bus 220 for communication with the other components viasignal line 234.

The messaging application 103 may include a messaging module 202, ananimation module 204, an action module 206, and a user interface module208.

The messaging module 202 generates a messaging stream. In someimplementations, the messaging module 202 includes a set of instructionsexecutable by the processor 235 to generate the messaging stream. Insome implementations, the messaging module 202 is stored in the memory237 of the computing device 200 and can be accessible and executable bythe processor 235.

In some implementations, the messaging module 202 generates a messagingstream that includes data sent to and from users and chat bots, forexample, by sending data to a user device 115, a messaging server 101,and/or a second server 120. The messaging stream may include one or moremessages where the messages have certain characteristics, such as asender; a recipient; and message content including text, an animatedobject, images, video, and message metadata. The message metadata mayinclude a timestamp, an originating device identifier, an expirationtime, a retention time, various formats and effects applied, etc. Insome implementations, the messaging stream includes a displayedmessaging stream that includes messages displayed in chronological orderwithin a user interface with various formats and effects applied.

The messaging stream may be used as part of different messagingplatforms, such as part of an instant messaging application, ashort-message service (SMS), an email application, an enhanced-messageservice (EMS), a multimedia-message service (MMS), push messaging (e.g.,HDML, WAP push, etc.), application-to-application messaging, etc. Themessages may be available for a limited amount of time, archived for anindeterminate time, etc. The messages may be encrypted. In someimplementations, the messaging module 202 generates messages that areindependent of the animated objects and inaccessible to the animatedobjects. In some implementations, the messages are available to theanimated objects and are used to modify the display of the animatedobjects, for example, when an animated object appears to react tocontent in a message.

In some implementations, the messaging module 202 instructs the userinterface module 208 to generate a user interface that includes themessaging stream. The user interface may include fields for enteringtext, videos, images, emojis, etc. The messaging module 202 receivesmessages between users and instructs the user interface module 208 todisplay the messages in the messaging stream. For example, user 125 aenters text via the user interface that says “Hey Carl!” The messagingmodule 202 on the user device 115 a transmits the message to user 125 nand the message is displayed on the user device 115 n. In someimplementations, the message is transmitted from the user device 115 ato the messaging server 101, which transmits the message to the userdevice 115 n.

The animation module 204 generates animated objects. In someimplementations, the animation module 204 includes a set of instructionsexecutable by the processor 235 to generate the animated object. In someimplementations, the animation module 204 is stored in the memory 237 ofthe computing device 200 and can be accessible and executable by theprocessor 235.

In some implementations, the animation module 204 generates a group ofanimated objects. The animated objects may include cartoons; caricaturesof people (famous people, avatars, generic people, etc.), animals (e.g.,a bear), inanimate objects (e.g., a cookie); abstract moving objects(e.g., a swirling pattern with eyes and a mouth); etc.

The animation module 204 may instruct the user interface module 208 toprovide the group of animated in a user interface. The animation module204 may organize the group of animated objects according to type andinstruct the user interface module 208 to display an organized group ofanimated objects from which the user may select an animated object.

In some implementations, the animation module 204 may instruct the userinterface module 208 to display options for customizing an animatedobject. For example, the user interface may include options forselecting a color or a size of an animated object. In someimplementations, the options for customizing the animated object may bespecific to the type of animated object. For example, the user interfacemay include an option to select an eye color for animated objects thathave eyes. In some implementations, the user interface may includeoptions for limiting the amount of information and/or actions availableto the animated object. For example, the user interface may includeoptions for disabling certain behaviors, such as nodding or producing asound. In another example, the user interface may include options fordisabling certain types of actions based on privacy concerns, such asdisabling context-based animations that react based on words in themessages, while retaining animations that are in response to explicituser input, such as a user shaking the computing device 200.

In some implementations, the animation module 204 may instruct the userinterface module 208 to provide a group of animated objects that aredifferent depending on the type of computing device 200 being used toselect an animated object. For example, where the computing device 200is a smart watch, the group may include a subset of the animated objectsthat may be appropriate for the display on the smart watch. In someimplementations, the group of animated objects may include differentversions that are used for different devices. An animated object mayinclude a complicated version for a desktop computer, a simpler versionfor a mobile device, and a more simple version for a smart watch. Forexample, an animated object on the desktop may include a cartoon of aman with a background scene, the animated object on the mobile devicemay include the cartoon of the man, and the animated object on the smartwatch may include a cartoon of the man's face.

In some implementations, the animation module 204 may instruct acomputing device 200 to provide different attributes of the animatedobject based on the type of computing device 200. For example, for asingle animated object, the animation module 204 may instruct acomputing device 200 that corresponds to a smart watch to providevibrations and/or a sound, a computing device 200 that corresponds to amobile device to provide a visual display, and a computing device 200that corresponds to virtual reality goggles to provide athree-dimensional rendition of the user interface. The three-dimensionalrendition may including placing the animated object at different depthsin the user interface.

The animation module 204 receives a selection of an animated object froma user. The animation module 204 generates the animated object andinstructions the user interface module 208 to display the animatedobject in the messaging stream. The user interface module 208 maydisplay the animated object in different parts of the messaging stream.For example, the user interface module 208 may display the animatedobject at the top of the user interface, at the bottom of the userinterface or in the middle of the user interface. In another example,the user interface module 208 may display the one or more messageswithin the messaging stream while the animated object remains fixed in aportion of the messaging stream. In yet another example, the userinterface module 208 may display the animated object according to a timethat the first user selected the animated object so that the animatedobject is located after content that was provided before the animatedobject was selected and before content that is provided after theanimated object was selected. In yet another example, the user interfacemodule 208 may display the animated object in random locations. The userinterface module 208 may also change the location of the animated objectbased on actions performed by a user, as described in greater detailbelow.

The user interface module 208 displays the animated object within theuser interface for each person that is viewing the same messagingstream. For example, the messaging stream may be viewed by a single userthat is making notes for himself, the messaging stream may be viewed bya first user and a second user, or the messaging stream may be viewed bya group of users. In some implementations, the user interface module 208places the animated object in different locations based oncharacteristics associated with different users. For example, a firstuser may provide user input that the first user prefers to see theanimated object at the bottom right-hand part of the screen. In anotherexample, the animated object may be located in the center of themessaging stream for users from a group that interact with the animatedobject and at the top left of the messaging stream for users that havenot interacted with the animated object. In some implementations, theanimated object is displayed differently depending on the position ofthe animated object in the messaging stream and/or the time the animatedobject has been displayed and/or how long since a user action associatedwith the animated object occurred.

In some implementations, the animated object may look different tomultiple users that are viewing the same messaging stream based onmetadata associated with each of the users. The metadata may include atime of day associated with a user device, a location associated with auser device, a time zone associated with a user device, user preferencesassociated with a user, etc. The animation module 204 may obtaininformation from the sensor 245 to determine information from themetadata. For example, the animation module 204 may determine the user'slocation, if the user has contented to such a determination by theanimation module 204, based on a sensor 245 that provides globalpositioning system (GPS) information. The animation module 204 maymodify an animated object based on the metadata. For example, where theanimated object is an animation of a person, the person may wear shortsif the user is located in an area with warm weather, a jacket if theuser is located in an area with cold weather, etc. The animation module204 may display the animation of the person with different clothing ordifferent behavior based on the time of day of the user. For example,the animation module 204 may display the animation of the person inpajamas and the animation may fall asleep if the time of day of the useris at night. In some implementations, upon consent of the user, theanimation module 204 may modify the animated object based on user data.For example, the animation module 204 may instruct the user interfacemodule 208 to display the animated object with an alarm that goes offwhen the user has configured an alarm on the computing device 200, theanimated object may display a countdown associated with a timer that theuser configured on the computing device 200, the animated object maydisplay an upcoming calendar event based on a calendar entry based oninformation associated with the second server 120, etc.

In some implementations, the animation module 204 instructs the userinterface module 208 to provide the second user with set of animatedobjects based on their relationships to the first animated object. Forexample, where the first animated object conveys a message, such as“I'll be home soon,” the set of animated objects may include responsesto the message. The user interface module 208 may replace a firstanimated object with the second animated object or the second animatedobject may be displayed in the same messaging stream as the firstanimated object. In some implementations, the first animated object andthe second animated object interact with each other.

The action module 206 modifies the animated object based on a useraction. In some implementations, the action module 206 includes a set ofinstructions executable by the processor 235 to modify the animatedobject. For example, the action module 206 may program the animatedobject (e.g., the animated object may include stored code or aprerecorded animation) to react to the user action. In someimplementations, the action module 206 is stored in the memory 237 ofthe computing device 200 and can be accessible and executable by theprocessor 235.

The action module 206 receives a first action from a first user relatedto the animated object. The action module 206 determines a type ofaction that occurred and instructs the user interface module 208 tomodify a display of the animated object based on the action. Forexample, when the first user taps on an animated object, the actionmodule 206 instructs the user interface module 208 to display heartscoming off of the animated object. In some implementations, the usersthat view the same messaging stream will see the hearts coming off ofthe animated object. The action module 206 receives a second action froma second user related to the animated object. For example, the seconduser makes a swiping motion, which the action module 206 detects. Theaction module 206 instructs the user interface module 208 to modify thedisplay based on the second action. Continuing with the example above,the action module 206 instructs the user interface module 208 to displaythe animated objects as grabbing the hearts with the animated object'smouth. FIGS. 3A-3J below provide an example of different user actionsthat cause the action module 206 to determine an action and the userinterface module 208 to modify a display of the animated object based onthe action.

The actions may include taps, swipes, making noise, changing pressure,moving a pointing device (e.g., a mouse moving an arrow), moving thecomputing device 200, capturing an image, providing a message with acontext, providing a message with a word in the message, providing voicecontent, selecting options provided by the user interface, selectinganother animated object, etc.

Turning to FIG. 3A, an example user interface 300 is illustrated of amessaging stream that includes an animated cookie according to someimplementations. In this example, the messaging stream may include alist 301 of the users that are participating in the messaging stream. Afirst user may be associated with a first user icon 302 in the messagingstream. The first user may select an animated cookie 303 as the animatedobject and the user interface module 208 may display the animated cookie303 within a word bubble 304.

FIG. 3B illustrates an example user interface 310 of a messaging streamthat includes the animated cookie 303 with eyes that follow a cursor 311controlled by a pointing device that is controlled by a first useraccording to some implementations. In this example, the user interfacemodule 208 illustrates the cursor 311 with a circle; however, othervariations are possible, such as an arrow, a rectangle, etc. The actionmodule 206 determines that a pointing device is moved above the locationof the animated cookie 303 in the user interface. This is illustrated inFIG. 3B with the cursor 311 above the animated cookie 303. The actionmodule 206 instructs the user interface module 208 to modify a displayof the animated cookie 303. For example, the animated cookie 303 isupdated to show animated eyes that move and track the movement of thecursor 311 as the cursor 311 moves above the animated cookie 303.

The animated cookie 303 may follow the location of the cursor 311 withthe same speed of movement as the cursor 311. For example, if the cursor311 moves up and down quickly, the animated cookie 303 may include eyesthat are animated to look up and down as quickly as the cursor 311. Insome implementations, moving the cursor 311 a particular speed couldcause the animated object to react. In this example, moving the cursor311 around the animated cookie 303 several times may cause the animatedcookie 303 to look dizzy, for example, by depicting stars floatingaround the animated cookie 303.

FIG. 3C illustrates an example user interface 320 of a messaging streamthat includes the animated cookie 303 that is viewable by multiple usersaccording to some implementations. In this example, the second user isassociated with a second user icon 321 in the messaging stream. Theanimated cookie 303 remains in the same location because the animatedcookie 303 is part of the word bubble 304.

FIG. 3D illustrates an example user interface 330 of a messaging streamthat includes the animated cookie 303 with eyes that follow a pointingdevice 331 controlled by the second user according to someimplementations. In this example, the action module 206 determines alocation of the cursor 311 and the user interface module 208 modifiesthe display of the animated cookie 303 to look above and to the left ofwhere the cursor 311 is located.

The second user moves the cursor 311 to the animated cookie 303 in orderto move the animated cookie. In this example, the user interface module208 also includes informative text below the second icon 321 to informthe users that the second user is moving the animated cookie 303.

FIG. 3E illustrates an example user interface 340 of a messaging streamthat includes the animated cookie 303 that reacts to being movedaccording to some implementations. In this example, as the second usermoves the animated cookie 303, the user interface module 208 modifiesthe display of the animated cookie 303 to look as though the cursor 311is tickling the animated cookie 303 by modifying the animated cookie 303to have scrunched up eyes and a pursed smiling mouth. Because the seconduser moved the animated cookie 303 outside of the word bubble associatedwith the first user, the user interface module 208 creates a third icon341 associated with the first user that indicates that the first usercreated the animated cookie by calling the animated cookie 303 an activesticker. The second user may move the animated cookie 303 anywherewithin the messaging stream. In some implementations, the animatedcookie stays fixed wherever a user places it.

FIG. 3F illustrates an example user interface 350 of a messaging streamthat includes an animated cookie 303 that reacts to being placedaccording to some implementations. The user interface module 208illustrates the animated cookie 303 as continuing to laugh as if he wastickled by the pointing device. The user interface module 208 alsomodifies the text below the second icon 321 to inform the other usersthat the second user placed the animated cookie 303.

FIG. 3G illustrates an example user interface 360 of a messaging streamthat includes an animated cookie 303 with eyes that move to view textdisplayed within the messaging stream according to some implementations.The action module 206 determines that the first user entered text withinthe messaging stream. The user interface module 208 modifies theanimated cookie 303 to move the eye to look downward as if the animatedcookie 303 is reading the text. In some implementations, the animatedcookie 303 may not access the content of the text, but instead merelyreacts to the appearance of text. In some implementations, upon userconsent, the animated cookie 303 has access to the text. This featuremay be disabled, for example, if the user declines permission for theaction module 206 to detect that the user entered text or received amessage.

FIG. 3H illustrates an example user interface 370 of a messaging streamthat includes an animated cookie 303 that stays in a fixed locationwithin the messaging stream according to some implementations. As moremessages are added within the messaging stream, the messages scrollupward. Since the animated cookie 303 is placed in a fixed position, itstays within the center of the messaging stream.

FIG. 3I illustrates an example user interface 380 of a messaging streamthat includes an animated cookie 303 that reacts to a word in themessage 381, if the users participating in the messaging stream provideconsent to access the messages exchanged in the messaging stream,according to some implementations. In this example, the first userprovides a message that states “Oh! I have to go . . . chat later.”Based upon user consent to access the message, the action module 206determines that the words “I have to go . . . chat later” indicate thatthe first user is about to end the chat. The action module 206 maydetermine a reaction for the animated cookie 303 based on the message381 by using machine learning, comparing words in the message to listsof words associated with different contexts, etc. For example, such adetermination may be made by a comparison of one or more of the wordswith words known to be associated with ending a chat, e.g., based uponprior training data, based upon clustering previous messages, etc. Theuser interface module 208 modifies the display of the animated cookie303 to start to fall asleep (e.g., by illustrating droopy eyes) based onthe first user's message.

FIG. 3J illustrates an example user interface 390 of a messaging streamthat includes the animated cookie 303 that continues to react to theword within the message according to some implementations. The actionmodule 206 determines, when consent is provided by the second user foraccess to messages in the messaging stream, that the second user is alsoabout to leave the messaging stream based on the words associated withthe second user stating “Ok!Bye.” Based on the action module 206determining a meaning of the words, the user interface module 208modifies the display of the animated cookie 303 to fall asleep (e.g., bydisplaying the animated cookie 303 saying “ZZZ”).

In some implementations, the action from the user includes the userblowing on a computing device 200. For example, the user could blow on amobile device or blow while wearing a headset. The sensor 245 mayinclude a microphone that detects a change in airflow and transmitsinformation about the change in airflow to the action module 206. Theaction module 206 may determine a degree of the change in airflow andthe action module 206 instructs the user interface module 208 to movethe animated object based on the degree of the change in airflow. Forexample, the animated object may be a box of tissues and blowing on thecomputing device 200 causes the tissues to move out of the box oftissues. If the user blows slightly on the computing device 200, itcauses a few of the tissues from the box of tissues to come out of thebox. If the user blows hard on the computing device 200, it causesseveral of the tissues from the box of tissues to come out of the box.In another example, the animated object is a character, such as acartoon fox, and blowing on the computing device 200 causes the fox tohang on to the side of the messaging stream window and hold on. In yetanother example, the animated object is a bubble and blowing on thecomputing device 200 makes the bubble increase in size corresponding tothe extent of the first user blowing on the computing device 200.

In some implementations, the action from the user includes moving thecomputing device 200. The action module 206 may receive information froma sensor 245 (e.g., an accelerometer or a gyroscope) and determine adegree of the movement. The action module 206 may instruct the userinterface module 208 to illustrate the animated object with additionalchanges. For example, the user shaking the user's smart watch or othermobile device causes the action module 206 to instruct the userinterface module 208 to illustrate items moving, such as snow fallingfrom the sky, nuts and bolts coming loose, a character's hair becomingdisarrayed, the character shaking a fist at a user, etc. In anotherexample, when the user moves the computing device 200 to the user's ear,the action module 206 may receive information from the sensor 245indicating that the user moved the computing device 200 to the user'sear and instruct the speaker 243 to emit a noise. In some examples, theanimated object emits a different noise depending on how the computingdevice 200 is moved, such as a yip if the user moves the computingdevice 200 to the user's left ear and a bark if the user moves thecomputing device 200 to the user's right ear.

Turning to FIG. 4A, an example user interface 400 of a messaging streamis illustrated that includes an animated bear 405 according to someimplementations. A first user may select an animated bear 405 and placethe animated bear 405 in the center of the messaging stream below themessages. Upon user consent, the action module 206 may identify thatSteve provided a message stating “There might be bears at that picnicspot.” The action module 206 may instruct the user interface module 208to modify the display of the bear by animating the animated bear's 405eyes to move back and forth to give the appearance that the animatedbear 405 is reading the text.

FIG. 4B illustrates an example user interface 425 of the messagingstream that includes the animated bear 430 after a user performed a useraction according to some implementations. For example, the second usermay turn the user device 115 upside down. The action module 206 receivesinformation from a sensor 245 and determines that the degree of themovement of the user device 115 is 180 degrees. The action module 206instructs the user interface module 208 to modify the display to showthe animated bear 430 as upside down.

In another example, the action module 206, upon user consent, mayidentify that Karen responded to Steve with “We'll fight them off!” Theaction module 206 determines that fight is an instruction associatedwith the animated bear 430 and instructs the user interface module 206to modify the display of the animated bear 430 to show the animated bear430 initially fighting and then falling upside down.

In some implementations, the action from the user includes movementwithin the messaging stream. The movement may be the user touching atouch screen of a mobile device or movement of a pointing device, suchas a mouse. The animated object may be a character with eyes (e.g., asmiley face). The action module 206 may receive information about themovement from the sensor 245 (e.g. a touch screen), and determine thedirection of the movement. The action module 206 instructs the userinterface module 208 to move the eyes of the animated object tocorrespond to the direction of the movement from the first user. Inanother example, the movement may stretch the animated object.

Turning to FIG. 5A, an example user interface 500 of a messaging streamthat includes animated bubbles is illustrated according to someimplementations. The first user uses a pointing device associated with acomputing device 200 to pull a first arrow 502 in a first direction. Thesecond user uses a pointing device associated with another computingdevice 200 to pull a second arrow 503 in a second direction. Both thefirst arrow 502 and the second arrow 503 are pulling the bubble 501 in adifferent direction. The action module 206 identifies the first actionand the second action as pulling the bubble 501 in a tug of war bypulling in opposite directions.

FIG. 5B illustrates the example user interface 525 of the messagingstream that includes the animated bubbles after two users performed useractions according to some implementations. The action module 206determines how much each of the users pulls the bubble with the firstarrow 502 and the second arrow 503. In some implementations, the actionmodule 206 applies animation rules to determine a winner of the tug ofwar by determining whether the first user or the second user firstpulled the bubble a threshold number of pixels in the user interface.Other ways to determine a winner are possible, such as determining whichuser stretched the bubble a threshold pixel distance outside of aboundary.

In some implementations, when participant users in the messaging streamconsent to such use of messages, the action module 206 identifies a wordin a message or a context of the messaging stream. The action module 206may compare words in a message to a list of words associated withdifferent meanings, such as different emotions (e.g., happy, sad, angry,etc.), different states (e.g., about to end the chat), etc. The actionmodule 206 may use machine learning to predict a meaning associated witha user based on the message where the machine learning may be based onall messages available to the action module 206 or, subject to usercontent, the messages associated with a particular user. The context ofthe messaging stream may be based on user patterns, a time of day, alocation of the computing device 200, etc. and is determined only uponspecific user consent to access such data. For example, where a usertypically ends a messaging stream at the end of a workday. As a result,the action module 206 may instruct the user interface module 208 tomodify a display of the animated object based on the context.

In some implementations, the action module 206 may, responsive to usercontent, identify voice content from the user. The action module 206 mayconvert the speech to text and identify an indent of the voice content.For example, the action module 206 may identify the user providingverbal instructions for an abstract animated object that includes “Jumparound.” Based on the verbal content, the action module 206 instructsthe user interface to modify the display of the abstract animated objectto show it moving up and down.

In some implementations, a first user may be a chat bot (e.g., anautomated chat program) that provides services to a user. The animatedobject may be related to one or more messages exchanges between the chatbot and the user. For example, the user may instruct the chat bot tomake a reservation, a purchase, etc. by entering a message. The actionmodule 206 may, upon user consent, instruct the user interface module208 to modify the animated object based on the message. For example, ifthe user instructs the chat bot to make a reservation, the animatedobject includes a graphic associated with making a reservation.

Turning to FIG. 6, an example user interface 600 of a messaging streamis illustrated that includes an animated money transfer object 601according to some implementations. In this example, user Sara consentsto the use of a chat bot to perform actions for her by instructing theBankbot to pay off a credit card statement. The user provides a message602 that states: “@Bankbot Pay off my credit card statement.” TheBankbot responds with a message 603 that states: “Confirmed. Paymentposted.” Upon user consent for the action module 206 to access theuser's message, the action module 206 determines that the userinstructed the chat bot to transfer money from the user's account to acredit card company. The action module 206 instructs the user interfacemodule 208 to display an animated money transfer object 601 that showsmoney moving from a money bag to a credit card.

In some implementations, various examples described above may becombined. For example, a messaging stream may include multiple users anda chat bot. The action module 206 may detect a movement of a user on thecomputing device 200 and instruct the user interface module 208 tomodify a display of the animated object based on messages related to thechat bot and the movement of the user.

Turning to FIG. 7A, an example user interface 700 of an animated takeoutbox is illustrated according to some implementations. In this example,Kira and Sam exchange messages 701 about ordering delivery food fromTasty Thai. The users also consent to the chatbot accessing theirmessages to help the users. A food ordering chatbot places the order andinforms the users that the food will arrive in 40 minutes. The firstuser selects a takeout box animated object 702, which the user interfacemodule 208 displays in the messaging stream. The second user touches thetakeout box animated object 702 with a finger 703. The action module 206detects movement of the second user's finger 703 touching the animatedobject.

FIG. 7B illustrates the example user interface 725 of the animatedtakeout box after a user performed a user action according to someimplementations. Based on the second user touching the takeout boxanimated object 702 in FIG. 7A, the action module 206 determines thetype of action that occurred and instructs the user interface module 208to modify the takeout box animated object to display an opened takeoutbox animated object 726.

In some implementations, the action may include a second user selectinga second animated object. The second animated object may be from asubset of animated objects based on its relationship to a first animatedobject. The second animated object may be selected from a group of allanimated objects. In some implementations, the user interface module 208modifies a display by showing the first animated object interacting withthe second animated object. For example, the first animated object maybe a fox with boxing gloves and the second animated object may be akangaroo with boxing globes. The user interface module 208 may displaythe two animated objects fighting with each other. In someimplementations, the first user may control the first animated objectand the second user may control the second animated object such that thefirst and second user engage in a boxing match using the two animatedobjects.

In some implementations where multiple animated objects are displayed inthe messaging stream, the animated objects react differently dependingon how they were added to the messaging stream. Two animated objects mayreact differently depending on their proximity to each other and alength of time, such that animated objects that are close to each otherreact to each other more than animated objects that are far away fromeach other. For example, when two animated people are next to each otherthey look at each other and touch each other. When the two animatedpeople are at opposite sides of the messaging stream, they wave everytwo minutes but otherwise do not interact.

The user interface module 208 generates a user interface. In someimplementations, the user interface module 208 includes a set ofinstructions executable by the processor 235 to generate the userinterface. In some implementations, the user interface module 208 isstored in the memory 237 of the computing device 200 and can beaccessible and executable by the processor 235.

In some implementations, the user interface module 208 receivesinstructions from the animation module 204 to generate a user interfacethat includes a messaging stream. The user interface may include a groupof animated objects for a first user to choose from. The user interfacemodule 208 may receive a selection from the first user of one of theanimated objects. The user interface module 208 displays the animatedobject in the messaging stream.

The user interface module 208 receives instructions from the actionmodule 206 to modifying a display of the animated object based on afirst action from the first user. For example, the user interface module208 receives instructions to modify an animated object of marbles toshow them rolling around the messaging stream based on movement of acomputing device associated with the first user. The user interfacemodule 208 receives instructions from the action module 206 to modifythe display of the animated object based on a second action from asecond user. For example, the user interface module 208 receivesinstructions to show the marbles bouncing in the messaging stream basedon the second user touching a computing device 200 associated with thesecond user to simulate the marbles bouncing within the messagingstream.

In some implementations, the user interface module 208 provides a userinterface that includes interactive features to change the appearance ofthe animated object. For example, the user interface module 208 providesa user interface that provides a scratchpad for drawing. The scratchpadmay include a toolkit with various tools for drawing such as a pencil, apaintbrush, color options, etc. In another example, the user interfacemodule 208 provides a user interface that includes an interactivekeyboard for producing music, beeps, tones, etc. When a user touches akey on the keyboard, the action module 206 detect the touch andinstructs the speaker 243 to emit a beep, tone, etc. In yet anotherexample, the user interface module 208 provides a user interface thatincludes interactive graphics, such as charts, timelines, etc. where theuser has options for changing the appearance of the interactivegraphics.

FIG. 8A illustrates an example user interface 800 of a messaging streamthat includes an animated airplane according to some implementations. Inthis example, a first user selects an animated object of an airplane801, which represents a message to the second user that the first useris about to get on an airplane. The first user swipes across a screen ofthe smartwatch to cause the user interface module 208 to modify thedisplay of the airplane 801 to show the airplane 801 moving across thescreen. The animation module 204 provides the second user with a set ofanimated objects based on their relationship to the airplane 801. Forexample, the set of animated objects could be a hand waving, a thumbsup, and two people kissing. The second user selects the animated objectof two people kissing.

FIG. 8B illustrates an example user interface 825 of the messagingstream that includes an animated couple 826 that is displayed responsiveto a user action related to the animated airplane according to someimplementations. In this example, the user action is the second userselecting the animated object of the two people kissing.

Example Method

FIG. 9 illustrates a flowchart of an example method 900 to generate amessaging stream that includes an animated object. The method 900 isperformed by a messaging application 103 stored on a computing device200, such as a user device 115, a messaging server 101, or in part auser device 115 and in part a messaging server 101.

At block 902, a messaging stream is generated where one or more messagesare exchanged between a first user and a second user. For example, thefirst user and the second user send messages to each other using aninstant messaging platform, via text, via SMS, etc. At block 904, aselection is received of an animated object from the first user for themessaging stream. For example, the first user selects the animatedobject from a group of animated objects that are displayed for the firstuser's device. For example, the animated object is an animated versionof a flamingo. The user may customize the animated object by choosing acolor for the animated object, a style of eyes for the animated object,etc. At block 906, the animated object is provided in the messagingstream. For example, the user interface module 208 displays the animatedobject in a default location, such as the center of the user interface.

At block 908, a first action is received from the first user related tothe animated object. For example, the action module 206 detects thefirst user blowing into a sensor 245, such as a microphone, of thecomputing device 200. At block 910, a display of the animated object ismodified based on the first action. For example, based on the first userblowing into the computing device 200, the user interface module 208modifies the display of the animated object to show the flamingo blowingaround in the wind with his feathers flying.

At block 912, a second action is received from the second user relatedto the animated object. For example, the second user shakes the seconduser's computing device 200. At block 914, the display of the animatedobject is modified based on the second action. For example, the displayis modified to show the flamingo bouncing up and down with movementcorresponding to the shaking of the second user's computing device 200.

In the above description, for purposes of explanation, numerous specificdetails are set forth in order to provide a thorough understanding ofthe specification. It will be apparent, however, to one skilled in theart that the disclosure can be practiced without these specific details.In some instances, structures and devices are shown in block diagramform in order to avoid obscuring the description. For example, theimplementations can be described above primarily with reference to userinterfaces and particular hardware. However, the implementations canapply to any type of computing device that can receive data andcommands, and any peripheral devices providing services.

Reference in the specification to “some implementations” or “someinstances” means that a particular feature, structure, or characteristicdescribed in connection with the implementations or instances can beincluded in at least one implementation of the description. Theappearances of the phrase “in some implementations” in various places inthe specification are not necessarily all referring to the sameimplementations.

Some portions of the detailed descriptions above are presented in termsof algorithms and symbolic representations of operations on data bitswithin a computer memory. These algorithmic descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self-consistent sequence of steps leading to a desiredresult. The steps are those requiring physical manipulations of physicalquantities. Usually, though not necessarily, these quantities take theform of electrical or magnetic data capable of being stored,transferred, combined, compared, and otherwise manipulated. It hasproven convenient at times, principally for reasons of common usage, torefer to these data as bits, values, elements, symbols, characters,terms, numbers, or the like.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the following discussion,it is appreciated that throughout the description, discussions utilizingterms including “processing” or “computing” or “calculating” or“determining” or “displaying” or the like, refer to the action andprocesses of a computer system, or similar electronic computing device,that manipulates and transforms data represented as physical(electronic) quantities within the computer system's registers andmemories into other data similarly represented as physical quantitieswithin the computer system memories or registers or other suchinformation storage, transmission, or display devices.

The implementations of the specification can also relate to a processorfor performing one or more steps of the methods described above. Theprocessor may be a special-purpose processor selectively activated orreconfigured by a computer program stored in the computer. Such acomputer program may be stored in a non-transitory computer-readablestorage medium, including, but not limited to, any type of diskincluding optical disks, ROMs, CD-ROMs, magnetic disks, RAMs, EPROMs,EEPROMs, magnetic or optical cards, flash memories including USB keyswith non-volatile memory, or any type of media suitable for storingelectronic instructions, each coupled to a computer system bus.

The specification can take the form of some entirely hardwareimplementations, some entirely software implementations or someimplementations containing both hardware and software elements. In someimplementations, the specification is implemented in software, whichincludes, but is not limited to, firmware, resident software, microcode,etc.

Furthermore, the description can take the form of a computer programproduct accessible from a computer-usable or computer-readable mediumproviding program code for use by or in connection with a computer orany instruction execution system. For the purposes of this description,a computer-usable or computer-readable medium can be any apparatus thatcan contain, store, communicate, propagate, or transport the program foruse by or in connection with the instruction execution system,apparatus, or device.

A data processing system suitable for storing or executing program codewill include at least one processor coupled directly or indirectly tomemory elements through a system bus. The memory elements can includelocal memory employed during actual execution of the program code, bulkstorage, and cache memories which provide temporary storage of at leastsome program code in order to reduce the number of times code must beretrieved from bulk storage during execution.

In situations in which the systems discussed above collect or usepersonal information, the systems provide users with an opportunity tocontrol whether programs or features collect user information (e.g.,information about a user's social network, social actions or activities,profession, a user's preferences, or a user's current location), orcontrol whether and/or how to receive content from the server that maybe more relevant to the user. In addition, certain data may be treatedin one or more ways before it is stored or used, so that personallyidentifiable information is removed. For example, a user's identity maybe treated so that no personally identifiable information can bedetermined for the user, or a user's geographic location may begeneralized where location information is obtained (such as to a city,ZIP code, or state level), so that a particular location of a usercannot be determined. Thus, the user may have control over howinformation is collected about the user and used by the server.

What is claimed is:
 1. A computer-implemented method comprising:generating a messaging stream where one or more messages are exchangedbetween a first user and a second user; receiving a selection of ananimated object from the first user for the messaging stream; providingthe animated object in the messaging stream; receiving a first actionfrom the first user related to the animated object; modifying a displayof the animated object based on the first action; receiving a secondaction from the second user related to the animated object; andmodifying the display of the animated object based on the second action.2. The method of claim 1, wherein receiving the first action from thefirst user includes detecting a change in airflow near a microphoneassociated with a user device.
 3. The method of claim 1, whereinreceiving the first action from the first user includes detectingmovement of a finger on a touch screen or detection of movement of apointing device.
 4. The method of claim 1, wherein receiving the firstaction from the first user includes detecting movement of a user devicebased on information received from a sensor associated with the userdevice.
 5. The method of claim 1, wherein: receiving the first actionfrom the first user includes receiving a message from the first user anddetermining a context from the messaging stream; and modifying thedisplay of the animated object based on the first action includesmodifying the display of the animated object based on the context fromthe messaging stream.
 6. The method of claim 1, wherein the first actionis pulling the animated object in a first direction and the secondaction is pulling the animated object in a second direction.
 7. Themethod of claim 1, further comprising: displaying the one or moremessages within the messaging stream while the animated object remainsfixed in a portion of the messaging stream.
 8. The method of claim 1,wherein the first user is a chat bot and the animated object is relatedto the one or more messages exchanged between the first user and thesecond user.
 9. The method of claim 1, wherein the display of theanimated object is modified based on at least one of a word in the oneor more messages, voice content, and a context of the messaging stream.10. The method of claim 1, further comprising: identifying a set ofobjects to provide as options to the first user based on a type of userdevice on which the messaging stream is displayed, wherein the animatedobject is part of the set of objects.
 11. A non-transitory computerreadable medium with instructions stored thereon that, when executed byone or more computers, cause the one or more computers to performoperations, the operations comprising: generating a messaging streamwhere one or more messages are exchanged between a first user and asecond user; receiving a selection of an animated object from the firstuser for the messaging stream; causing a version of the animated objectto be displayed based on a type of user device on which the animatedobject is displayed; receiving an action from the second user related tothe animated object; and in response to receiving the action, modifyingthe display of the animated object.
 12. The computer storage medium ofclaim 11, wherein the selection is a first selection and the animatedobject is a first animated object and further comprising: providing thesecond user with a set of animated objects based on their relationshipto the first object; receiving a second selection of a second animatedobject from the set of animated objects; and in response to thereceiving the second selection, providing the second object in themessaging stream.
 13. The computer storage medium of claim 11, whereinthe version of the animated object to be displayed based on the type ofuser device on which the animated object is displayed includes acomplicated version for a desktop computer, a simpler version for amobile device, and a more simple version for a smart watch.
 14. Thecomputer storage medium of claim 11, wherein receiving the action fromthe second user includes detecting a change in airflow near a microphoneassociated with a user device.
 15. The computer storage medium of claim11, wherein: the selection is a first selection; the animated object isa first animated object; the action from the second user includes asecond selection of a second animated object from the second user forthe messaging stream; and modifying the display of the first animatedobject includes the first animated object interacting with the secondanimated object.
 16. A system comprising: one or more processors; and amemory that stores instructions executed by the one or more processors,the instructions comprising: generating a messaging stream where one ormore messages are exchanged between a first user and a second user;receiving a selection of an animated object from the first user for themessaging stream; providing the animated object in the messaging stream;receiving a first action from the first user related to the animatedobject; modifying a display of the animated object based on the firstaction; receiving a second action from the second user related to theanimated object; and modifying the display of the animated object basedon the second action.
 17. The system of claim 16, wherein receiving thefirst action from the first user includes detecting a change in airflownear a microphone associated with a user device.
 18. The system of claim16, wherein receiving the first action from the first user includesdetecting movement of a finger on a touch screen or detection ofmovement of a pointing device.
 19. The system of claim 16, whereinreceiving the first action from the first user includes detectingmovement of a user device based on information received from a sensorassociated with the user device.
 20. The system of claim 16, wherein:receiving the first action from the first user includes receiving amessage from the first user and determining a context from the messagingstream; and modifying the display of the animated object based on thefirst action includes modifying the display of the animated object basedon the context from the messaging stream.